/**
 * 媒体文件管理器类
 */
export class MediaManager {
  mediaFiles: {};
  constructor() {
    this.mediaFiles = {
      'handclosed.cur': require('../media/handclosed.cur'),
      'handdelete.cur': require('../media/handdelete.cur'),
      'handopen.cur': require('../media/handopen.cur'),
      'quote0.png': require('../media/quote0.png'),
      'quote1.png': require('../media/quote1.png'),
      'sprites.png': require('../media/sprites.png'),
      'sprites.svg': require('../media/sprites.svg'),
      '1x1.gif': require('../media/1x1.gif'),
      'delete-icon.svg': require('../media/delete-icon.svg'),
      'dropdown-arrow.svg': require('../media/dropdown-arrow.svg'),
      'foldout-icon.svg': require('../media/foldout-icon.svg'),
      'pilcrow.png': require('../media/pilcrow.png'),
      'resize-handle.svg': require('../media/resize-handle.svg'),

    };

    console.log(
      '媒体管理器已初始化，加载了',
      Object.keys(this.mediaFiles).length,
      '个媒体文件'
    );

    // 如果你使用的是 Blockly 库，可以在这里设置 Blockly 的媒体路径
    // if (typeof window.Blockly !== 'undefined') {
    //   // 覆盖 Blockly 的媒体路径处理
    //   this.overrideBlocklyMediaHandling();
    // }
  }

  /**
   * 覆盖 Blockly 的媒体处理方法
   * @private
   */
  // overrideBlocklyMediaHandling() {
  // 设置 Blockly 的媒体路径为空，强制使用我们的媒体管理器
  // window.Blockly.pathToMedia = './';

  // // 保存原始的 getMediaPath 方法
  // const originalGetMediaPath = window.Blockly.utils.getMediaPath;
  // const self = this;

  // // 覆盖 getMediaPath 方法
  // window.Blockly.utils.getMediaPath = function (mediaPath) {
  //   // 从路径中提取文件名
  //   const fileName = mediaPath.split('/').pop();

  //   if (self.mediaFiles[fileName]) {
  //     console.log(`使用本地媒体文件: ${fileName}`);
  //     return self.mediaFiles[fileName];
  //   }

  //   // 如果找不到，记录警告并回退到原始方法
  //   console.warn(`未找到本地媒体文件: ${fileName}，尝试使用原始路径`);
  //   return originalGetMediaPath(mediaPath);
  // };
  // }

  /**
   * 获取媒体文件的 URL
   * @param {string} filename - 文件名
   * @returns {string} 文件 URL
   */
  getMediaUrl(filename) {
    if (this.mediaFiles[filename]) {
      return this.mediaFiles[filename];
    }
    console.warn(`未找到媒体文件: ${filename}`);
    return '';
  }

  /**
   * 获取所有媒体文件名
   * @returns {string[]} 文件名数组
   */
  getAllMediaFiles() {
    return Object.keys(this.mediaFiles);
  }
}

// 创建单例实例
export const mediaManager = new MediaManager();
